// pages/mine/course_manager.js
const {request, showTip} = require("../common/request");
//动态计算当前页面的可滚动的高度
function getScrollHeight(){
    // 计算滚动区域的高度：屏幕高度 - 导航栏高度 - 底部安全区域高度
    return  wx.getSystemInfoSync().windowHeight - 400;
}

Page({
    data: {
        scrollHeight:getScrollHeight(),
        userInfo: {},//登录后的用户信息
    },
    onLoad(options) {
        initUserInfo(this);
    },
    onShow() {
        // 每次页面显示时重新获取数据
        initUserInfo(this);
    },
    // 下拉刷新触发时执行
    onPullDownRefresh() {
        wx.showLoading({ title: '刷新中...' });
        initUserInfo(this);
        wx.stopPullDownRefresh();// 停止刷新动画
        wx.hideLoading();
    },
    getUserInfo(){//点击获取用户信息
        //获取用户信息
        const that = this;
        // 直接调用 getUserProfile
        wx.getUserProfile({
            desc: '用于完善用户资料', // 必须填写用途
            success: (userRes) => {
                // 获取用户信息后，再调用 wx.login
                wx.login({
                    success: (loginRes) => {
                        if (loginRes.code) {
                            // 发送 code 和用户信息到后端
                            request({
                                url:'/yoga_business/wechat/wechatUser/login',
                                method:'POST',
                                data:{
                                    "code": loginRes.code,
                                    "nickName": userRes.userInfo.nickName,
                                    "avatarUrl": userRes.userInfo.avatarUrl
                                },
                                success(res) {
                                    if(res.success){
                                        //说明缓存存在，则进行赋值
                                        that.setData({userInfo:res.content});
                                        wx.setStorageSync("userInfo",res.content);//更新缓存
                                        wx.setStorageSync("token",res.content.token)
                                        //进行再次获取用户额外信息
                                        initUserOtherInfo(that)
                                    }else{
                                        showTip();
                                    }

                                },
                                fail(msg) {
                                    showTip();
                                }
                            });
                        }
                    }
                });
            },
            fail: (err) => {
                console.error('获取用户信息失败:', err);
            }
        });
    },
    goUserInfo(e){//去个人信息详情页面
        wx.navigateTo({
            url: '/pages/mine/mine_userInfo'
        });
    },
    goMyPointList:function(){//去我的预约页面
        wx.navigateTo({
            url: '/pages/yueke/yueke_mine',
        });
    },
    goCourseManager:function(){//去我的预约页面
        wx.navigateTo({
            url: '/pages/mine/admin/course_manager',
        });
    },
    goCoursePlanManager:function(){
        wx.navigateTo({
            url: '/pages/mine/admin/course_plan_manager',
        });
    },
    goUserManager:function(){
        wx.navigateTo({
            url: '/pages/mine/admin/user_manager',
        });
    },

})


/**
 * 初始化用户信息
 * @param _this
 */
const initUserInfo = (_this) => {
    //先获取换成的用户数据，没有则进行显示未登录
    const userInfoTemp = wx.getStorageSync("userInfo");
    console.log(userInfoTemp)
    if(userInfoTemp != null){
        initUserOtherInfo(_this);
    }
};

/**
 * 获取用户其他数据，如积分等
 * @param _this
 */
const initUserOtherInfo = (_this) => {
    //说明缓存存在，则进行赋值
    const userInfo = wx.getStorageSync("userInfo");//更新缓存
    if(userInfo){
        request({
            url:'/yoga_business/wechat/wechatUser/getUserOtherInfo',
            method:'POST',
            data:{
                "openId": userInfo.openId
            },
            success(res) {
                if(res.success){
                    //说明缓存存在，则进行赋值
                    wx.setStorageSync("userInfo",res.content);//更新缓存
                    _this.setData({
                        userInfo:wx.getStorageSync("userInfo")
                    });
                }else{
                    showTip();
                }
            },
            fail(msg) {
                showTip();
            }
        });
    }else{
        _this.setData({
            userInfo:null
        });
    }
};

